Pro Git
https://m.media-amazon.com/images/I/51QQtVlsWsL.jpg https://www.amazon.co.jp/dp/B01ISNIKES/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1
Pro Git (Second Edition) is your fully-updated guide to Git and its usage in the modern world. Git has come a long way since it was first developed by Linus Torvalds for Linux kernel development. It has taken the open source world by storm since its inception in 2005, and this book teaches you how to use it like a pro.
Effective and well-implemented version control is a necessity for successful web projects, whether large or small. With this book you’ll learn how to master the world of distributed version workflow, use the distributed features of Git to the full, and extend Git to meet your every need.
Written by Git pros Scott Chacon and Ben Straub, Pro Git (Second Edition) builds on the hugely successful first edition, and is now fully updated for Git version 2.0, as well as including an indispensable chapter on GitHub. It’s the best book for all your Git needs.
1. 使い始める
1.1 バージョン管理に関して
VCS: Version Control System(バージョン管理システム) あらゆるファイルをバージョンで管理する
以前のバージョンにすぐに戻せる
変更履歴の比較が容易
問題点の特定
ローカル・バージョン管理システム
間違いが起こりやすい
集中バージョン管理システム
単一障害点になる
分散バージョン管理システム
現在の主流
1.2 Git略史
1.3 Gitの基本
Git 以外のの VCS は基本バージョンからの差分を管理する 全ファイルのチェックサムを照合
3つの状態
コミット済: ローカルデータベースに出たが安全に格納されている
git commitされた
修正済: ファイルに変更を加えたが、データベースにコミットされていない
git addされていない
ステージ済: 次のスナップショットにコミットを加えるために、修正されたファイルに印をつけている
git addされたが、git commitされていない
1.4 コマンドライン
1.5 Gitのインストール
1.6 最初のGitの構成
/etc/gitconfig: システム上の全ユーザと全リポジトリの設定
~/.gitconfig or ~/.config/git/config: 特定ユーザの全リポジトリ設定
.git/config: リポジトリ上の設定
1.7 ヘルプを見る
1.8 まとめ
2. Git の基本
2.1 Git リポジトリの取得
git init
ディレクトリをgit管理(初期化)する
.gitディレクトリが作成される
git clone
ディレクトリを作成
リポジトリの全データを取得
指定したバージョン(デフォルトは最新)にチェックアウト
2.2 変更内容のリポジトリへの記録
ファイルの種類
untracked: 新規作成、削除
tracked
unmodified
modified
staged
ファイル状態の流れ
https://git-scm.com/book/en/v2/images/lifecycle.png
コマンド例
code:bash
git add # untracked/modifiedをstaged
git rm # unmodifiedをuntrackedにしてstaged
git checkout -- # modifiedをunmodified
git restore (--staged) # untrackedをunmodified
git commit # stagedをunmodified
git mv # rm + add
2.3 コミット履歴の閲覧
git log
2.4 作業のやり直し
code:bash
git reset HEAD # stagedの取り消し
git checkout -- # modifiedの取り消し
2.5 リモートでの作業
複数のリモートリポジトリを持つ事が可能(defaultはorigin)
git remote -vで確認できる
code:bash
git fetch origin
git merge
git pull
git remote show origin # リモートリポジトリの状態を確認
2.6 タグ
git tag
code:bash
git tag -a v1.2 ${commit-id} # commitにタグ(v1.2)を付ける
2.7 Git エイリアス
2.8 まとめ
3. Git のブランチ機能
3.1 ブランチとは
git commitした時のobject
commit object
直近のコミットへのポインタが格納
tree object
ディレクトリ構造
blob object
各ファイルが持つ
HEADの推移
git branch: mainブランチ
git checkout: 作成されたブランチ
branchを切り替える事で、HEADの位置を移動できる
git log --oneline --decorate --graph --allで確認
3.2 ブランチとマージの基本
https://git-scm.com/book/en/v2/images/basic-merging-1.png
git mergetool
3.3 ブランチの管理
code:bash
git branch -v
git branch (--merged|--no-merged)
3.4 ブランチでの作業の流れ
3.5 リモートブランチ
3.6 リベース
リモートリポジトリには実施しないほうがいい
3.7 まとめ
4. Gitサーバー
4.1 プロトコル
Local / HTTPS / SSH
4.2 サーバー用の Git の取得
4.3 SSH 公開鍵の作成
4.4 サーバーのセットアップ
4.5 Git デーモン
4.6 Smart HTTP
4.7 GitWeb
4.8 GitLab
4.9 サードパーティによる Git ホスティング
4.10 まとめ
5. Git での分散作業
5.1 分散作業の流れ
5.2 プロジェクトへの貢献
5.3 プロジェクトの運営
5.4 まとめ
6. GitHub
6.1 アカウントの準備と設定
6.2 プロジェクトへの貢献
6.3 プロジェクトのメンテナンス
6.4 組織の管理
6.5 スクリプトによる GitHub の操作
6.6 まとめ
7. Git のさまざまなツール
7.1 リビジョンの選択
7.2 対話的なステージング
7.3 作業の隠しかたと消しかた
7.4 作業内容への署名
7.5 検索
7.6 歴史の書き換え
7.7 リセットコマンド詳説
7.8 高度なマージ手法
7.9 Rerere
7.10 Git によるデバッグ
7.11 サブモジュール
7.12 バンドルファイルの作成
7.13 Git オブジェクトの置き換え
7.14 認証情報の保存
7.15 まとめ
8. Git のカスタマイズ
8.1 Git の設定
8.2 Git の属性
8.3 Git フック
8.4 Git ポリシーの実施例
8.5 まとめ
9. Gitとその他のシステムの連携
9.1 Git をクライアントとして使用する
9.2 Git へ移行する
9.3 まとめ
10. Gitの内側
10.1 配管(Plumbing)と磁器(Porcelain)
10.2 Gitオブジェクト
10.3 Gitの参照
10.4 Packfile
10.5 Refspec
10.6 転送プロトコル
10.7 メンテナンスとデータリカバリ
10.8 環境変数
10.9 まとめ
A1. Appendix A: その他の環境でのGit
A1.1 グラフィカルインタフェース
A1.2 Visual StudioでGitを使う
A1.3 EclipseでGitを使う
A1.4 BashでGitを使う
A1.5 ZshでGitを使う
A1.6 PowershellでGitを使う
A1.7 まとめ
A2. Appendix B: Gitをあなたのアプリケーションに組み込む
A2.1 Gitのコマンドラインツールを使う方法
A2.2 Libgit2を使う方法
A2.3 JGit
A3. Appendix C: Gitのコマンド
A3.1 セットアップと設定
A3.2 プロジェクトの取得と作成
A3.3 基本的なスナップショット
A3.4 ブランチとマージ
A3.5 プロジェクトの共有とアップデート
A3.6 検査と比較
A3.7 デバッグ
A3.8 パッチの適用
A3.9 メール
A3.10 外部システム
A3.11 システム管理
A3.12 配管コマンド